package org.jeecg.modules.xl.kuaimai;

import cn.hutool.core.date.DateUtil;
import com.google.common.collect.Maps;
import lombok.Data;

import java.util.Map;

import static org.jeecg.modules.xl.kuaimai.util.RopUtils.serverSign;

/**
 * 快麦接口配置
 *
 * @author deco
 * @create 2024-11-07
 */
@Data
public class KuaimaiAPIConfig {
    public static final String AppKey = "708145933";
    public static final String AppSecret = "3605b8ed8a4d4a01926e3f928ce2611e";
    public static final String AccessToken = "1995c4be332847d0b3d1e22ff7d2811e";
    /**
     * 快麦公共参数
     * @param method
     * @return
     * @throws Exception
     */
    public static Map<String, String> getKuaiMaiAPIPublicParam(String method) throws Exception {
        //https://open.kuaimai.com/docs/api/API%E5%AF%B9%E6%8E%A5%E8%AF%B4%E6%98%8E/API%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95%E8%AF%A6%E8%A7%A3
        Map<String, String> params = Maps.newHashMap();
        params.put("method", method);//API接口名称
        params.put("appKey", KuaimaiAPIConfig.AppKey);//分配给应用的AppKey
        params.put("timestamp", DateUtil.now());//格式化时间(yyyy-MM-dd HH:mm:ss)，时区为GMT+8，例如：2020-09-21 16:58:00。API服务端允许客户端请求最大时间误差为10分钟
        params.put("format", "json");//响应格式。默认为json格式，可选值：json
        params.put("version", "1.0");//API协议版本 可选值：1.0
        params.put("sign_method", "md5");//签名的摘要算法(默认 hmac)，可选值为：hmac，md5，hmac-sha256。
        params.put("session", KuaimaiAPIConfig.AccessToken);//授权会话信息 （即access_token，由系统分配）
        String sign = serverSign(params, KuaimaiAPIConfig.AppSecret, method);
        params.put("sign", sign);//签名
        return params;
    }

    public static Map<String, String> getKMStockParam(String pageSize, String pageNo) throws Exception {
        //https://open.kuaimai.com/docs/api/API%E5%AF%B9%E6%8E%A5%E8%AF%B4%E6%98%8E/API%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95%E8%AF%A6%E8%A7%A3
        String method = "stock.api.status.query";
        Map<String, String> params = Maps.newHashMap();
        params.put("method", method);//API接口名称
        params.put("appKey", KuaimaiAPIConfig.AppKey);//分配给应用的AppKey
        params.put("timestamp", DateUtil.now());//格式化时间(yyyy-MM-dd HH:mm:ss)，时区为GMT+8，例如：2020-09-21 16:58:00。API服务端允许客户端请求最大时间误差为10分钟
        params.put("format", "json");//响应格式。默认为json格式，可选值：json
        params.put("version", "1.0");//API协议版本 可选值：1.0
        params.put("sign_method", "md5");//签名的摘要算法(默认 hmac)，可选值为：hmac，md5，hmac-sha256。
        params.put("session", KuaimaiAPIConfig.AccessToken);//授权会话信息 （即access_token，由系统分配）
        params.put("pageSize",pageSize);
        params.put("pageNo",pageNo);
        String sign = serverSign(params, KuaimaiAPIConfig.AppSecret, method);
        params.put("sign", sign);//签名
        return params;
    }
    //带业务参数
    public static Map<String, String> getKuaiMaiAPIPublicParam(String method,Map param) throws Exception {
        //https://open.kuaimai.com/docs/api/API%E5%AF%B9%E6%8E%A5%E8%AF%B4%E6%98%8E/API%E8%B0%83%E7%94%A8%E6%96%B9%E6%B3%95%E8%AF%A6%E8%A7%A3
        Map<String, String> params = Maps.newHashMap();
        params.put("method", method);//API接口名称
        params.put("appKey", KuaimaiAPIConfig.AppKey);//分配给应用的AppKey
        params.put("timestamp", DateUtil.now());//格式化时间(yyyy-MM-dd HH:mm:ss)，时区为GMT+8，例如：2020-09-21 16:58:00。API服务端允许客户端请求最大时间误差为10分钟
        params.put("format", "json");//响应格式。默认为json格式，可选值：json
        params.put("version", "1.0");//API协议版本 可选值：1.0
        params.put("sign_method", "md5");//签名的摘要算法(默认 hmac)，可选值为：hmac，md5，hmac-sha256。
        params.put("session", KuaimaiAPIConfig.AccessToken);//授权会话信息 （即access_token，由系统分配）
        params.putAll(param);
        String sign = serverSign(params, KuaimaiAPIConfig.AppSecret, method);
        params.put("sign", sign);//签名
        return params;
    }

    /**
     * https://open.kuaimai.com/docs/api/API%E6%96%87%E6%A1%A3/%E5%95%86%E5%93%81/%E6%9F%A5%E8%AF%A2%E5%95%86%E5%93%81SKU%E5%88%97%E8%A1%A8V2* 查询商品列表2
     * @param pageSize
     * @param pageNo
     * @return
     * @throws Exception
     */
    public static Map<String, String> getSKUItemListParam(String pageSize, String pageNo) throws Exception {
        //https://open.kuaimai.com/docs/api/API%E6%96%87%E6%A1%A3/%E5%95%86%E5%93%81/%E6%9F%A5%E8%AF%A2%E5%95%86%E5%93%81SKU%E5%88%97%E8%A1%A8V2
        String method =  "item.list.query";
        Map<String, String> params = Maps.newHashMap();
        params.put("method", method);//API接口名称
        params.put("appKey", KuaimaiAPIConfig.AppKey);//分配给应用的AppKey
        params.put("timestamp", DateUtil.now());//格式化时间(yyyy-MM-dd HH:mm:ss)，时区为GMT+8，例如：2020-09-21 16:58:00。API服务端允许客户端请求最大时间误差为10分钟
        params.put("format", "json");//响应格式。默认为json格式，可选值：json
        params.put("version", "1.0");//API协议版本 可选值：1.0
        params.put("sign_method", "md5");//签名的摘要算法(默认 hmac)，可选值为：hmac，md5，hmac-sha256。
        params.put("session", KuaimaiAPIConfig.AccessToken);//授权会话信息 （即access_token，由系统分配）
        params.put("pageSize",pageSize);
        params.put("pageNo",pageNo);
        String sign = serverSign(params, KuaimaiAPIConfig.AppSecret, method);
        params.put("sign", sign);//签名
        return params;
    }
}
